package reflect;

import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Scanner;

/**
 * java的反射机制:
 * 反射是java的动态机制,允许程序在[运行期间]在确定如对象的实例化,属性操作,方法的调用等,
 * 可以提高代码的灵活性,扩展性,维护性.
 * 但是运行效率相对降低同时开销增多
 * 需要适度使用
 * */
public class ReflectDemo1 {
    public static void main(String[] args) throws ClassNotFoundException {
        Class cls1 = String.class;
        Class cls2 = ArrayList.class;
        Class cls3 = int.class;

        Class cls4 = Class.forName("java.lang.String");
        Class cls5 = Class.forName("java.util.ArrayList");
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你需要的类名:");
        String name = sc.nextLine();
        Class cls6 = Class.forName(name);

        System.out.println("获取类的全称:"+cls6.getName());
        System.out.println("获得类的类名:"+cls6.getSimpleName());
        System.out.println("获得类的包名:"+cls6.getPackage());

        Method[] me1 =cls4.getMethods();
        System.out.println("一共有"+me1.length+"多少个方法");
        for (Method e :me1){
            System.out.println(e.getName());
        }





















    }
}
